﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using Npgsql;
//using BibliotecaClasse;
using Validador001.localhost;

namespace Validador001
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            String[] uf = { "AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO" };
            cbUf.Items.AddRange(uf);
        }

        String msgErroAgrupada = ""; //variável que vai receber mensagens para campos inválidos
        Formulario f = new Formulario();
        Service1 servico = new Service1();
        int cod;
        //DAOForm dao = new DAOForm();
        

        #region tudo
        #region agrupada
        private void btnAgrupada_Click(object sender, EventArgs e)
        {
            if (!ValidaVazio(txtNome))
            {
                msgErroAgrupada += "\nInformar o nome do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtDtNasc))
            {
                msgErroAgrupada += "\nInformar a data de nascimento do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtRg))
            {
                msgErroAgrupada += "\nInformar o RG do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtCpf))
            {
                msgErroAgrupada += "\nInformar o CPF do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtMae))
            {
                msgErroAgrupada += "\nInformar o nome da mãe do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtPai))
            {
                msgErroAgrupada += "\nInformar o nome do pai do(a) Aluno(a).";
            }

            if (!ValidaVazio(txtxLog))
            {
                msgErroAgrupada += "\nInformar o Logradouro.";
            }

            if (!ValidaVazio(txtNum))
            {
                msgErroAgrupada += "\nInformar o número da residência.";
            }

            if (!ValidaVazio(txtComp))
            {
                msgErroAgrupada += "\nInformar o Complemento.";
            }

            if (!ValidaVazio(txtBairro))
            {
                msgErroAgrupada += "\nInformar o bairro.";
            }

            if (!ValidaVazio(txtCidade))
            {
                msgErroAgrupada += "\nInformar a cidade.";
            }

            if (!ValidaVazio(cbUf))
            {
                msgErroAgrupada += "\nInformar a UF.";
            }

            if (!ValidaVazio(txtPais))
            {
                msgErroAgrupada += "\nInformar o país.";
            }

            if (msgErroAgrupada == "")
            {
                MessageBox.Show("Parabéns!!! Todos os dados são válidos.",
                "Dados Válidos",
                MessageBoxButtons.OK,
                MessageBoxIcon.Asterisk,
                MessageBoxDefaultButton.Button1);

            }
            else
            {
                MessageBox.Show(msgErroAgrupada,
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                msgErroAgrupada = "";
            }
        }
        #endregion

        /**
         * métodos ValidaVazio recebem objeto e validam se o valor .Text está vazio
         * sobrecarga para atender os tipos TextBox, MaskedTextBox, ComboBox
         */
        public Boolean ValidaVazio(TextBox t)
        {
            if (t.Text == "")
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        public Boolean ValidaVazio(MaskedTextBox m)
        {
            if (m.Text == String.Empty)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        public Boolean ValidaVazio(ComboBox c)
        {
            if (c.Text == "")
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        #region individual
        private void btnIndiv_Click(object sender, EventArgs e)
        {

            if (!ValidaVazio(txtNome))
            {
                MessageBox.Show("\nInformar o nome do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtNome.Focus();
            }

            else if (!ValidaVazio(txtDtNasc))
            {
                MessageBox.Show("\nInformar a data de nascimento do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtDtNasc.Focus();
            }

            else if (!ValidaVazio(txtRg))
            {
                MessageBox.Show("\nInformar o RG do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtRg.Focus();
            }

            else if (!ValidaVazio(txtCpf))
            {
                MessageBox.Show("\nInformar o CPF do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtCpf.Focus();
            }

            else if (!ValidaVazio(txtMae))
            {
                MessageBox.Show("\nInformar o nome da mãe do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtMae.Focus();
            }

            else if (!ValidaVazio(txtPai))
            {
                MessageBox.Show("\nInformar o nome do pai do(a) Aluno(a).",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtPai.Focus();

            }

            else if (!ValidaVazio(txtxLog))
            {
                MessageBox.Show("\nInformar o Logradouro.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtxLog.Focus();
            }

            else if (!ValidaVazio(txtNum))
            {
                MessageBox.Show("\nInformar o número da residência.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtNum.Focus();
            }

            else if (!ValidaVazio(txtComp))
            {
                MessageBox.Show("\nInformar o Complemento.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtComp.Focus();
            }

            else if (!ValidaVazio(txtBairro))
            {
                MessageBox.Show("\nInformar o bairro.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtBairro.Focus();
            }

            else if (!ValidaVazio(txtCidade))
            {
                MessageBox.Show("\nInformar a cidade.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtCidade.Focus();
            }

            else if (!ValidaVazio(cbUf))
            {
                MessageBox.Show("\nInformar a UF.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                cbUf.Focus();
            }

            else if (!ValidaVazio(txtPais))
            {
                MessageBox.Show("\nInformar o país.",
                                "Dados Inválidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                txtPais.Focus();

            }
            else
            {
                MessageBox.Show("Parabéns!!! Todos os dados são válidos.",
                                "Dados Válidos",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Asterisk,
                                MessageBoxDefaultButton.Button1);
            }


        }
        #endregion
        #endregion

        public void atualizarTabela()
        {
            dgvTabela.DataSource = servico.listForm();
        }
        
        private void LimpaCamposFormulario(Control.ControlCollection controles)
        {
            foreach (Control ctrl in controles)
            {
                if (ctrl is TextBox)
                {
                    ((TextBox)(ctrl)).Clear();
                }
                if (ctrl is MaskedTextBox)
                {
                    ((MaskedTextBox)(ctrl)).Clear();
                }
                if (ctrl is ComboBox)
                {
                    ((ComboBox)(ctrl)).Text = "";
                }
                LimpaCamposFormulario(ctrl.Controls);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            f.Nome = txtNome.Text;
            f.Ender = txtxLog.Text;
            f.Num = txtNum.Text;
            f.Compl = txtComp.Text;
            f.Bairro = txtBairro.Text;
            f.Cidade = txtCidade.Text;
            f.Uf = cbUf.Text;
            f.Pais = txtPais.Text;
            f.Dtnasc = txtDtNasc.Text;
            f.Cpf = txtCpf.Text;
            f.Rg = txtRg.Text;
            f.Nmpai = txtPai.Text;
            f.Nmmae = txtMae.Text;

            servico.insertForm(f);
            MessageBox.Show("Formulário Inserido com Sucesso!");
            atualizarTabela();


        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                atualizarTabela();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro:" + ex.Message);
            }
        }

        private void dgvTabela_CellEnter(object sender, DataGridViewCellEventArgs e)
        {

            cod = Convert.ToInt32(dgvTabela.Rows[e.RowIndex].Cells[0].Value);
            txtNome.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[1].Value);
            txtxLog.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[2].Value);
            txtNum.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[3].Value);
            txtComp.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[4].Value);
            txtBairro.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[5].Value);
            txtCidade.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[6].Value);
            cbUf.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[7].Value);
            txtPais.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[8].Value);
            txtDtNasc.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[9].Value);
            txtCpf.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[10].Value);
            txtRg.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[11].Value);
            txtPai.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[12].Value);
            txtMae.Text = Convert.ToString(dgvTabela.Rows[e.RowIndex].Cells[13].Value);
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                servico.deleteForm(cod);
                MessageBox.Show("Formulário excluído com sucesso!  " + cod);
                atualizarTabela();
            }
            catch (NpgsqlException ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            f.Nome = txtNome.Text;
            f.Ender = txtxLog.Text;
            f.Num = txtNum.Text;
            f.Compl = txtComp.Text;
            f.Bairro = txtBairro.Text;
            f.Cidade = txtCidade.Text;
            f.Uf = cbUf.Text;
            f.Pais = txtPais.Text;
            f.Dtnasc = txtDtNasc.Text;
            f.Cpf = txtCpf.Text;
            f.Rg = txtRg.Text;
            f.Nmpai = txtPai.Text;
            f.Nmmae = txtMae.Text;

            try
            {
                servico.updateForm(f, cod);
                atualizarTabela();
                MessageBox.Show("Formulário atualizado com sucesso!");
            }
            catch (NpgsqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void btnLimpar_Click(object sender, EventArgs e)
        {

            LimpaCamposFormulario(this.Controls);
        }
    }
 
}
 

